namespace CodeContrib.Data.Entity
{
	public interface ITree<TTreeNode> where TTreeNode : TreeNode, new()
	{
		TTreeNode AddRootNodeIfNotExists();

		TreeNode AddTreeNode(int parenTreeNodeId);

		TTreeNode AddTreeNodeToRoot();

		void RemoveTreeNode(int treeNodeId);

		TTreeNode Root();

		TreeHierarchy<TTreeNode> ToHierarchy();
	}
}